<?php
// ********************************************
// 
// Справочник производителей, торговых марок
//
// ********************************************

require_once( "tools.class.php" );
require_once( "tables.class.php" );
require_once( "datadefine.class.php" );

class VendorDictionary extends tables
{
    private static $error = '<b>Извините. </b>На сайте возникли трудности технического характера.<br>Обратитесь за помощью к администратору сайта.';
        
    public function GetPage()
    {

        $data = new jqGridData();

        while( true )
        {
            if( $this->db == NULL ) {
                $data->userdata->errcode = 1;
                $data->userdata->errmess = self::$error;
                break;
            }
            $db = $this->db;
        
// Проверяем данные
            $page    = ( isset($_REQUEST["page"]) && $_REQUEST["page"] > 0 ) ? $_REQUEST["page"] : 1;
            $limit    = ( isset($_REQUEST["rows"]) && $_REQUEST["rows"] > 0 ) ? $_REQUEST["rows"] : 1;
            $sidx    = ( isset($_REQUEST["sidx"]) && $_REQUEST["sidx"] != '' ) ? $_REQUEST["sidx"] : 'vend_id';
            $sord    = ( isset($_REQUEST["sord"]) && strtolower($_REQUEST["sord"]) == 'desc' ) ? 'DESC' : 'ASC';
            $search    = ( isset($_REQUEST["_search"]) && strtolower($_REQUEST["_search"]) == 'true') ? true : false;
    
// Фильтр
            $whc = array();
            if( $search )
            {
                if(isset($_REQUEST["vend_id"]) && is_numeric($_REQUEST["vend_id"]) ) {
		    		$whc[] = "vend_id=" . $db->quote($_REQUEST["vend_id"]);
			    }
                
                if(isset($_REQUEST["vend_name"]) && $_REQUEST["vend_name"] != "") {
			    	$whc[] = "vend_name LIKE " . $db->quote("%".$_REQUEST["vend_name"]."%");
                }
            }
            $whereclaus = (count($whc) != 0 ) ? " WHERE " . implode(" AND ", $whc) : "";
		    unset($whc);
            
// Получаем количество записей с учетом фильтра
            $recset = $db->query( "SELECT COUNT(*) as count FROM vendors" . $whereclaus );
		    $row = $recset->fetch(PDO::FETCH_ASSOC);
		    $count = $row['count'];
		    $recset->closeCursor();
            
// Пустая таблица
            if ($count == 0) break;
            
// Рассчитаем сколько всего страниц займут данные в БД
    		if( $count > 0 && $limit > 0) {
    			$total_pages = ceil($count/$limit);
    		} else {
    			$total_pages = 0;
    		}                  
 
		    if ($page > $total_pages) $page=$total_pages;                  
 
		    $start = $limit*$page - $limit;                   
		    if($start < 0) $start = 0;                  
 
// Формируем запрос
		    $sqlreq =   "SELECT * FROM vendors".$whereclaus." ORDER BY ".$sidx." ".$sord.
		                " LIMIT ".$start.", ".$limit;

		    $recset = $db->query($sqlreq);                  
 
// Формирование объекта для возврата
        
    		$data->page      = $page;
    		$data->total     = $total_pages;
    		$data->records   = $count;
    		
    // Строки данных для таблицы
		    $i = 0;
		    while($row = $recset->fetch(PDO::FETCH_ASSOC)) {
		    	$data->rows[$i]['id'] = $row['vend_id'];
		    	$data->rows[$i]['cell'] = array(
		    			$row['vend_id'],
					    $row['vend_name']
			    );
			    $i++;
		    }
            break;
        }
        
// Отдаем результат
		header("Content-type: text/script;charset=utf-8");
		echo json_encode($data);
		return;
    }

//
// Добавление нового производителя
//
    public function Insert()
    {
    }

//
// Изменение в записи производителя
//
    public function Update()
    {
    }

//
// Удалить список производителей
//
    public function Delete()
    {
    }

//
// Найти список по подстроке в имени
//    
    public function Find()
    {
        $errmess = "";
		$errcode = 0;
        $term = isset($_REQUEST["term"]) ? $_REQUEST["term"] : '';

        $data = array();
        
        while( true ) {
// Проверяем данные
            if ($term == "") {
                $errmess = "Нарушение формата данных";
				$errcode = 2;
                break;
            }

            if( $this->db == NULL ) {
                $errmess = self::$error;
				$errcode = 1;
                break;
            }
            $db = $this->db;
            
// Формируем запрос
            $sqlreq = "SELECT * FROM vendors WHERE vend_name LIKE ".$db->quote("%".$term."%")." ORDER BY vend_name";
            $recset = $db->query( $sqlreq );
            while( $row = $recset->fetch(PDO::FETCH_ASSOC) ) {
                $unit = new AutoCompleteItem();
                $unit->value = $row['vend_id'];
                $unit->name = $row['vend_name'];
                $data[] = $unit;
            }
            $recset->closeCursor();
            break;
        }
        
        Tools::json_response( $errmess, $errcode, $data );            
        return;
    }
    

    public function GetList()
    {
        $errmess = "";
		$errcode = 0;
        $node = array();
        
        while( true ) {
            $node_id = isset($_REQUEST["node_id"]) ? $_REQUEST["node_id"] : '';
            if( $node_id != '0' ) {
                $errmess = "Нарушение формата данных";
				$errcode = 2;
                break;
            }

            if( $this->db == NULL ) {
                $errmess = self::$error;
				$errcode = 1;
                break;
            }
            $db = $this->db;

// Получаем количество записей с учетом фильтра
            $recset = $db->query( "SELECT COUNT(*) as count FROM vendors" );
            $row = $recset->fetch(PDO::FETCH_ASSOC);
            $count = $row['count'];
            $recset->closeCursor();

// Пустая таблица
            if ($count == 0) { 
                break; 
            }

// Формируем запрос
            $sqlreq = "SELECT (SELECT COUNT(*) AS cnt FROM models WHERE (vend_id=vendors.vend_id) ) ".
                        "AS mcount, vend_id, vend_name FROM vendors ORDER BY vend_name";

            $recset = $db->query($sqlreq);                  
             
// Строки данных для таблицы
            while($row = $recset->fetch(PDO::FETCH_ASSOC)) {
                $unit = new DynaTreeNode();
                $unit->key = $row['vend_id'];
                $unit->title = $row['vend_name'];
                $unit->isFolder = true;
                $unit->isLazy = ( $row['mcount'] != 0 ) ? true : false;
                $node[] = $unit;
            }
            $recset->closeCursor();
            
            break;
        }

//        header("Content-type: text/script; charset=utf-8");
        echo json_encode($node);

        return;
    }
    
} //End of class VendorDictionary
?>